<?php

/**
 * FTP工具
 * @author 崔俊涛 <36086383@qq.com>
 * @version V1.0
 * FTP连接配置
 * $ftp_config = array(
 * 'host' => '127.0.0.1',
 * 'port' => 0,
 * 'user' => 'test'
 * 'pwd' => 'test'
 * );
 * 
 * 使用方法举例
 * $ftp_conn = new ExtendsYspFtp($ftp_config);
 * $rs = $ftp_conn->uploadFile('/from_path', 'to_path');
 */
class ExtendsYspFtp {

    //FTP连接句柄
    private $ftp_conn;
    //FTP连接配置
    static private $ftp_config;

    function __construct($ftp_config) {
        self::$ftp_config = $ftp_config;
        $rs = $this->conn();
        if ($rs === false) {
            $this->connSSL();
        }
    }

    /**
     * 一般方式连接
     * @param array $ftp_config 一维数组，FTP连接配置，详细参数说明见类名前注释
     */
    private function conn() {
        $this->ftp_conn = ftp_connect(self::$ftp_config['host'], self::$ftp_config['port']);
        $this->ftpLogin();
    }

    /**
     * SSL方式连接
     * @param array $ftp_config 一维数组，FTP连接配置，详细参数说明见类名前注释
     */
    private function connSSL() {
        $this->ftp_conn = ftp_ssl_connect(self::$ftp_config['host'], self::$ftp_config['port']);
        $this->ftpLogin();
    }

    /**
     * 登录FTP
     */
    function ftpLogin() {
        $login_result = ftp_login($this->ftp_conn, self::$ftp_config['user'], self::$ftp_config['pwd']);
        if ($login_result) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 上传文件
     * @param string $file_come_path 原始文件路径
     * @param string $file_to_path 目标文件路径
     */
    public function uploadFile($file_come_path, $file_to_path) {
        $ret = ftp_put($this->ftp_conn, $file_to_path, $file_come_path, FTP_BINARY);
        if ($ret != FTP_FINISHED) {
            echo "上传文件中发生错误...";
            exit(1);
        } else {
            return $ret;
        }
    }

    /**
     * 关闭FTP
     */
    public function ftpClose() {
        ftp_close($this->ftp_conn);
    }

}
